// 头文件引用
// 官方库
#include <windows.h>
//#include <iostream>
#include <limits> // 用于处理输入缓冲区清理

// 项目专用函数库
#include "CodeSharingLibrary.h"





bool ModifyPathLengthLimit(bool enable) {
    HKEY hKey;
    LPCSTR subKey = "SYSTEM\\CurrentControlSet\\Control\\FileSystem";
    DWORD value = enable ? 1 : 0;

    // 需要管理员权限修改
    LONG result = RegOpenKeyExA(
        HKEY_LOCAL_MACHINE,
        subKey,
        0,
        KEY_WRITE,
        &hKey
    );

    if (result != ERROR_SUCCESS) {
        // std::cerr << "无法打开注册表项 (错误: " << result << ")" << std::endl;
        return false;
    }

    result = RegSetValueExA(
        hKey,
        "LongPathsEnabled",
        0,
        REG_DWORD,
        reinterpret_cast<const BYTE*>(&value),
        sizeof(value)
    );

    RegCloseKey(hKey);

    if (result != ERROR_SUCCESS) {
        // std::cerr << "修改注册表失败 (错误: " << result << ")" << std::endl;
        return false;
    }

    return true;
}



// 开启长路径支持
bool EnableLongPathSupport() {
    return ModifyPathLengthLimit(true);
}



// 关闭长路径支持
bool DisableLongPathSupport() {
    return ModifyPathLengthLimit(false);
}